科技新知

上一期筆者就介紹寺過swarm的相容性,可以任意地刪除其中node、加入新的node,系統會自動同步各機狀態。今日,我們就來討論一下加減的流程吧。

實戰輪調流程

假設我們有5個 node,都為manager,各個 docker 版本都為28.0.4 ,我們將要關掉node 5 (ubuntu 22),並加入node 6 (ubuntu24),輪調流程如下

  1. 如果node5有vvip,login node 5,關掉vvip
    • systemctl stop keepalived
  2. login node1, 把node5降為drain模式,變為worker,並從群集中刪除
    • docker node update --availability drain node5
    • docker node demote node5
      • 若然node5不是直接關機、刪除,只想好好地離開群集,可以 login node5, 在node5上預先執行 docker swarm leave
    • docker node rm --force node5
      • 如果之前node5有好好地離開群集,而且狀態已經轉為down,那麼就不用"force"了,用最保守的刪除指令就可以 docker node rm node5
  3. login node1, 取得manager token
    • docker swarm join-token manager
  4. node5關機,新增node6,使用相容的ip段,或者使用node5的ip
  5. login node6, 加入群集,設定vvip
    • docker swarm join --token xxxx XX_IP:XX_PORT
    • systemctl stop keepalived

這陷阱這陷阱 偏我遇上

上述的操作,有一些可能的陷阱,筆者就剛好踩過,未來不知道會不會有官方保證

  • docker的版本需要相同,不同版本可能不能加入群集,例如
    • docker 28.0.4 不能加到 docker 27.5.1。
    • docker 27.2.x 不能加到 docker 27.5.1。
  • docker swarm,官方雖然宣稱支援不同版本共存,但這指的是已加入的node,在不解綁的情況下原機升級。
  • 在swarm已有多版本共存的情況下,有一個node選擇完全脫離,它想再加入,也是會失敗的。可能這不是docker自身的限制,而是底層library的相容性問題。筆者在實測不同版本時,就得到這樣的error。docker credentials: cannot check peer: missing selected ALPN property

馬交野


Until Dawn 死亡輪迴
史迪仔英語版
職業特工隊:最終清算全景聲
IMAX with Laser 罪人們
4DX  殺神John Wick之芭蕾殺姬
做個有錢人
4DX  英語版  史迪仔
4DX   史迪仔
超人雅古 THE MOVIE:超次元大決戰!光與暗的雅古
英語版  史迪仔
4DX  職業特工隊:最終清算
IMAX with Laser 馴龍記 英語版
腓尼基大作戰
殺神John Wick之芭蕾殺姬
不赦之罪
MX4D 職業特工隊:最終清算
IMAX with Laser 職業特工隊:最終清算
四個阿媽搞邊科 3rd MIQFF
史迪仔 英語版
殺神JOHN WICK外傳:芭蕾殺姬
罪人們
獵狐行動
關於我和鬼變成家人的那封利是
DAN DA DAN: 邪視
還魂
職業特工隊:最終清算
馴龍記
功夫夢:傳奇少年
史迪仔
死神來了:血脈
獵金•遊戲
送院途中
水餃皇后
雷霆特攻隊*
Until Dawn 死亡輪迴
史迪仔英語版